import { Dialog, Toast } from 'vant'
var walking
export default {
  /**
   * 定位
   * @param callback 回调
   */
  geolocation(callback, notLoading) {
    if (!notLoading) {
      Toast.loading({
        message: '加载中...',
        duration: 0,
        overlay: true
      })
    }
    AMap.plugin('AMap.Geolocation', function () {
      var geolocation = new AMap.Geolocation({
        // 是否使用高精度定位，默认：true
        enableHighAccuracy: true,
        // 设置定位超时时间，默认：无穷大
        timeout: 10000
      })
      geolocation.getCurrentPosition(function (status, result) {
        if (!notLoading) {
          Toast.clear()
        }
        if (status === 'complete') {
          callback(result)
        } else {
          onError(result)
        }
      })

      function onError(data) {
        // 定位出错
        Dialog.alert({
          title: '提示',
          message: '定位失败，请重试'
        }).then(() => {})
      }
    })
  },
  /**
   * 查询经纬度信息
   * @param lnglat [116.396574, 39.992706]
   * @param callback 成功回调
   * @param errorCallback 失败回调
   */
  geocoder(lnglat, callback, errorCallback) {
    AMap.plugin('AMap.Geocoder', function () {
      var geocoder = new AMap.Geocoder()
      geocoder.getAddress(lnglat, function (status, result) {
        if (status === 'complete' && result.info === 'OK') {
          callback(result)
        } else {
          errorCallback()
          onError(result)
        }
      })
      function onError(data) {
        // 获取失败
        Dialog.alert({
          title: '提示',
          message: '位置信息获取失败，请重试'
        }).then(() => {})
      }
    })
  },
  /**
   * POI地点搜索
   * @param city 指定搜索所在城市，支持传入格式有：城市名、citycode和adcode,默认全国
   * @param keywords 关键字
   * @param callback 成功回调
   * @param errorCallback 失败回调
   */
  placeSearch(city, keyword, callback) {
    AMap.plugin('AMap.PlaceSearch', function () {
      var placeSearch = new AMap.PlaceSearch({
        city: city
      })
      placeSearch.search(keyword, function (status, result) {
        if (status === 'complete' && result.info === 'OK') {
          callback(result)
        } else {
          onError(result)
        }
      })
      function onError(data) {
        // 获取失败
        Dialog.alert({
          title: '提示',
          message: '位置信息获取失败，请重试'
        }).then(() => {})
      }
    })
  },
  /**
   * 步行导航
   * @param map 地图
   * @param start [116.396574, 39.992706] 开始位置
   * @param end [116.396574, 39.992706] 结束位置
   * @param callback 成功回调
   */
  walking(map, start, end, callback) {
    AMap.plugin('AMap.Walking', function () {
      if (walking) {
        walking.clear()
      }
      walking = new AMap.Walking({
        map: map
      })
      if (start && end) {
        walking.search(start, end, function (status, result) {
          if (status === 'complete') {
            callback(result)
          } else {
            onError(result)
          }
        })
      }
      function onError(data) {
        // 获取失败
        Dialog.alert({
          title: '提示',
          message: '步行路线规划获取失败，请重试'
        }).then(() => {})
      }
    })
  }
}
